Manager   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 22
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 2
eloc 20
dl 0
loc 22
ccs 9
cts 9
cp 1
rs 10
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A getTranslator 0 11 2
1
import Loader from './Loader';
2
import Translator from './Translator';
3
import TranslatorFactory from './Translator/Factory';
4
5
interface Translators {
6
  [languageCode: string]: Translator;
7
}
8
9
export default class Manager {
10
  protected loader: Loader;
11
  protected translators: Translators;
12
  protected translatorFactory: TranslatorFactory;
13
14
  constructor(loader: Loader, translatorFactory: TranslatorFactory) {
15 4
    this.loader = loader;
16 4
    this.translatorFactory = translatorFactory;
17 4
    this.translators = {};
18
  }
19
20
  async getTranslator(languageCode: string): Promise<Translator> {
21 3
    if (this.translators.hasOwnProperty(languageCode)) {
22 1
      return this.translators[languageCode];
23
    }
24
25 2
    const languageData = await this.loader.loadLanguage(languageCode);
26 2
    const translator: Translator = this.translatorFactory.createTranslator(languageData);
27 2
    this.translators[languageCode] = translator;
28
29 2
    return translator;
30
  }
31
}
32